Product image evaluation system and method

ABSTRACT

A product image evaluation system. In embodiments, the system comprises or interacts with a product database comprising a product information record that comprises a product identifier and a product category for a product, and an image database comprising a plurality of candidate images for the product. In embodiments the image database can comprise images received from a plurality of different sources. The system can comprise a parameterized grouping engine configured to separate images into groups of similar images, an image selector configured to select one or more images from each group, and an image sorter configured to determine an order of the selected images. Embodiments can distill the superset of all available images to provide a set of images that are “sufficiently different” from each other and satisfy quality requirements. As a result, no images containing unique information are left behind, and images containing duplicate or irrelevant information are discarded.

RELATED APPLICATION

The present application claims the benefit of U.S. ProvisionalApplication No. 62/646,170 filed Mar. 21, 2018, which is herebyincorporated herein in its entirety by reference.

TECHNICAL FIELD

Embodiments of the present disclosure relate generally to the field ofproduct information systems, and more particularly to systems forproviding product images for display to a user.

BACKGROUND

Online sales applications present product pages to customers includingone or more images of the product. Customers can be strongly influencedto purchase by the product images available. Therefore, it is desirableto provide accurate and explanatory images to help customers make apurchasing decision.

Product information systems can generally provide a number of potentialimages for a product. Because these image sets can be automaticallyaggregated from a number of sources, curation is needed to generateuseful sets of images that provide the information that the end userrequires. Problems that can exist in sets of images displayed for aproduct can include too few images, too many images, duplicate (or nearduplicate) images, irrelevant images, and placeholder images. Due to thelarge number of products available on most retail sites, it is notfeasible for human reviewers to select optimized image sets. Inaddition, human reviewers may provide subjective or biased selectionsthat are not optimized for customer needs.

Currently available image selection systems do not always present anoptimal selection of images to influence a positive outcome on the partof a customer. In particular, currently available image deduplicationsystems do not take into account the desire to show multiple views of aproduct, and may eliminate useful views where the image data is similar,but the information provided is not.

A need exists, therefore, for a methodology that presents an optimal setof meaningful images in a meaningful order to the customer to conveymaximum information about the product.

SUMMARY

Embodiments of the present disclosure enable management of product imagedata from disparate sources. Where different sellers and sourcescontribute product images, the resulting set of images may widely varyin quality and content. The data-driven approaches of the presentdisclosures can distill the superset of all available images to providea set of images that are sufficiently different from each other andsatisfy quality requirements. In other words, no images containingunique information are left behind, and images containing duplicate orirrelevant information are discarded. The steps to achieve this goalinvolve pairwise identification of near duplicate images, clustering theimages into similar groups, and finally, selecting the best candidatefrom each group based on resolution, sharpness, coverage, relevance, andother factors.

In embodiments, a product image evaluation system comprises or interactswith a product database comprising a product information record thatcomprises a product identifier and a product category for a product, andan image database comprising a plurality of candidate images for theproduct. In embodiments the image database can comprise images receivedfrom a plurality of different sources. The system can comprise aparameterized grouping engine, an image selector, and an image sorter.

The grouping engine can be configured to produce one or more groups ofsimilar images by performing a pairwise comparison between each pair ofcandidate images of the plurality of candidate images using at least onealgorithm configured based on a parameter associated with the productcategory of the product. The parameter associated with the productcategory can be modified based on an input from a user or by studyingexample images from the category. The at least one algorithm can beselected from the group consisting of: a perception hash algorithm, adifference hash algorithm, a wavelet hash algorithm, an average hashalgorithm, a cosine similarity algorithm, and a chi-square distancealgorithm.

The image selector can be configured to produce a set of selected imagesby choosing a best image in each group of similar images based on one ormore selection criteria related to the quality of the each similar imagein group of similar images. The image sorter can be configured toproduce an ordered list of product images for the product by orderingthe set of selected images based on one or more sorting criteria relatedto the content of each selected image in the set of selected images. Theselection criteria and sorting criteria can each be based on the productcategory.

In embodiments, the system can comprise an application interfaceconfigured to provide the ordered list of product images to a productsales application for display to a user on a product information screen.

The one or more selection criteria can be selected from the groupconsisting of: a resolution of the selected image, a sharpness of theselected image, and a coverage of a central object in the selectedimage. The one or more sorting criteria can be selected from the groupconsisting of: a content of the selected image, and a relevance of theselected image.

Embodiments can comprise an image preprocessor configured to produce apreprocessed output for each candidate image of the plurality ofcandidate images selected from the group consisting of: a trimmed image,a grayscale image, an edge enhanced image, and a red-green-blue (RGB)histogram.

The above summary is not intended to describe each illustratedembodiment or every implementation of the subject matter hereof. Thefigures and the detailed description that follow more particularlyexemplify various embodiments.

BRIEF DESCRIPTION OF THE DRAWINGS

Subject matter hereof may be more completely understood in considerationof the following detailed description of various embodiments inconnection with the accompanying figures.

FIG. 1 is a schematic diagram depicting an architecture of an imageselection system, according to an embodiment.

FIG. 2 is a schematic diagram depicting a data structure of a productrecord, according to an embodiment.

FIG. 3 is a schematic diagram depicting a data structure of apreprocessed image, according to an embodiment.

FIG. 4 is a schematic diagram depicting an architecture of a groupingengine, according to an embodiment.

FIG. 5 is a flowchart depicting a method of grouping images, accordingto an embodiment.

FIG. 6 is a schematic diagram depicting an architecture of a productsales application, according to an embodiment.

While various embodiments are amenable to various modifications andalternative forms, specifics thereof have been shown by way of examplein the drawings and will be described in detail. It should beunderstood, however, that the intention is not to limit the claimedinventions to the particular embodiments described. On the contrary, theintention is to cover all modifications, equivalents, and alternativesfalling within the spirit and scope of the subject matter as defined bythe claims.

DETAILED DESCRIPTION

FIG. 1 is a schematic diagram depicting an architecture of imageselection system 100, according to an embodiment. System 100 cancomprise preprocessor 200, parameterized grouping engine 300, imageselector 400, and image sorter 500. System 100 can receive productinformation from product database 10 and candidate images 22 for eachproduct from image database 20. System 100 can produce an ordered listof sorted images 502 based on a product record 12 and associatedcandidate images 22. System 100 can provide sorted images 502 to aproduct sales application 30.

FIG. 2 is a schematic diagram depicting the structure of a productrecord 12. Product database 10 can comprise one or more product datarepositories that can be queried to provide a product record 12comprising a product identifier 14 and a product category 16. Imagedatabase 20 can comprise one or more image repositories that can bequeried to provide one or more candidate images 22 that are associatedwith a given product record 12. Candidate images 22 can be provided inany image storage format known in the art such as Graphics InterchangeFormat (GIF), Portable Network Graphics (PNG), Tagged Image File Format(TIFF), Bitmap (BMP), Joint Photographic Experts Group (JPEG), and thelike.

Product database 10 and image database 20 can be incorporated withinimage selection system 100, or can be external components, inembodiments. Product database 10 and image database 20 can be integratedinto a single data store, or software service, such that a productrecord 12 can be provided with candidate images 22, or links to thestorage location for candidate images 22.

Preprocessor 200 can receive one or more candidate images 22 and providepreprocessed images 202. FIG. 3 is a schematic diagram depicting thestructure of a preprocessed image 202 according to an embodiment.Preprocessed image 202 can comprise one or more data sets resulting fromprocessing operations performed on candidate images 22. Other componentsof system 100 such as grouping engine 300, image selector 400 and imagesorter 500 can use components of preprocessed image 202, such thatcertain processing operations are not redundantly executed at multiplepoints in the image selection process.

Preprocessed image 202 can comprise trimmed image data 204. Preprocessor200 can execute one or more whitespace detection methods known in theart to determine if candidate image 22 contains external whitespace orother extraneous image data that can be cropped while preserving thecentral focus of the image. Trimming can enable more robust imagecomparison where two images share the same central features, but havedifferent border regions. Trimmed image data 204 can comprise a croppedversion of candidate image 22, if cropping is appropriate.

Preprocessor 200 can use one or more desaturation techniques known inthe art to produce grayscale image data 206. Preprocessor 200 cansimilarly produce edge enhanced image data 208 and RGB histogram data210. Preprocessor 200 can comprise or interface with one or morestandard image processing libraries in order to produce the variouscomponents of preprocessed image 202.

In embodiments, preprocessed image 202 can further comprise content tags212. Content tags 212 can indicate which view or views of the depictedproduct are represented in candidate image 22, as well as otherinformation about the content of the image. The available content tagscan vary based on the product category. For example, in an embodiment,candidate images for a product in a “shirt” category may have contenttags 212 including: front, back, front-modeled, back-modeled, and thelike. Similarly, candidate images for a product in a “television”category can have content tags 212 including: front view with the screenon, and front view with the screen off, and the like. Content tags canbe shared across categories in embodiments, for example multiplecategories may have products including the “close-up” tag.

Preprocessor 200 can comprise a user interface enabling human ormachine-intelligence tagging of image contents. For example,preprocessor 200 can provide a display of one or more candidate images22 and request that a user assign one or more content tags to eachimage. In one embodiment, preprocessor 200 can attempt to detect thecontent based on one or more characteristics of candidate image 22. Theautomatic content detection can be modified or tuned based on feedbackprovided by human users, or other content detection systems. Automaticcontent detection can be performed through the use of one or more deeplearning models, such as Keras models. In particular, Inception, VisualGeometry Group (VGG) 16-layer, VGG 19 layer, and Resnet networks can beused. In yet another embodiment, content tags 212 can be provided withcandidate image 22.

FIG. 4 is a schematic diagram depicting the structure of grouping engine300, according to an embodiment. Grouping engine 300 can store orreceive one or more product category specific parameters 304. Groupingengine can comprise one or more comparison algorithms 306, eachconfigured to provide a result indicating whether a first image 302 a isa duplicate or near-duplicate of a second image 302 b based on one ormore parameters 304. Grouping engine 300 can execute each comparisonalgorithm 306 for each pair of images 302 for a product record 12 tocreate one or more groups 308 of duplicate images. Based on theparameters 304 for each product category, the images 302 in each group308 may not be strictly identical. In other words, each group 308 maycontain multiple images 202 that are near-duplicates, as well as strictduplicates. In embodiments, grouping engine 300 can assign images withdiffering content tags 212 to different groups.

Comparison algorithms 306 can comprise various image comparisonalgorithms known in the art that can provide a probability or othermeasure of similarity between two or more images. Comparison algorithms306 can return true/false values indicating whether the input images arematch, or a probability value range from 0 to 1, though other ranges orindicators can be used. Each comparison algorithm 306 can furtherreceive one or more parameters 304, such as threshold parameters. Inembodiments, comparison algorithms 306 can each comprise a perceptionhash algorithm, difference hash algorithm, wavelet hash algorithm,average hash algorithm, cosine similarity algorithm, chi-square distancealgorithm, or the like. Each comparison algorithm 306 can use one ormore parts of preprocessed images 202 in order to make comparisondeterminations. For example, the RGB histograms of images 302 a and 302b can be compared using both a difference hash algorithm and a cosignsimilarity algorithm, or any other combination of comparison algorithms306. In one embodiment, the RGB histogram data 210 can be used by achi-square distance algorithm, the edge enhanced data 208 can be used bya difference hash algorithm, and the full color trimmed image data 204can be used by a perception hash algorithm, and one or more deeplearning models.

In embodiments, parameters 304 can comprise a different set of valuesfor each algorithm 306. In addition, parameters 304 can compriseweighting factors to be used when evaluating the results of eachcomparison algorithm 306.

In one embodiment, one or more machine-learning (or “deep-learning”)models can be trained to determine values for parameters 304 based ontraining sets comprising images in each category. One training methodcan comprise assembling a number of image pairs (for example, a fewhundred), some of which are near-duplicates and others are different.Comparison algorithms 306 can be executed multiple times with varyingparameters 304, and each parameter set can be evaluated in terms ofaccuracy, precision, recall, and F1 score (the weighted average ofprecision and recall). An optimal set of parameters 304 for eachcategory can be chosen based on the results (for example, by selectingthe parameter set with the highest combined F1 score and accuracy, orother optimization method).

Grouping engine 300 can utilize one or more machine-learning models todetermine parameters 304. In embodiments, one or more groups 308produced for a product record 12 can be evaluated by a human or machineuser for accuracy. Grouping engine 300 can use the feedback received tomodify one or more parameters 304 in order to increase groupingaccuracy. For example, if grouping engine 300 receives feedbackindicating that a cosine similarity algorithm is biased towardsinappropriately grouping images that are very different, the thresholdused for the cosine similarity algorithm can be decreased. In anotherexample, if a particular algorithm is poor at discriminating differencesfor a certain product category, the output of that algorithm can begiven a lower weight when evaluating images for that product category.In embodiments, grouping engine 300 can comprise one or moredeep-learning models such as those discussed with respect topreprocessor 200 above. In particular models such as Inception, VisualGeometry Group (VGG) 16-layer, VGG 19 layer, and Resnet networks can beused.

Those of ordinary skill in the art will recognize that image comparisonalgorithms can vary in effectiveness based on various characteristics ofthe input images. In embodiments, these deficiencies are mitigated byevaluating the results of multiple comparison algorithms 306 and bytuning the parameters used by each comparison algorithm 306 (and theevaluation of results) by product category.

FIG. 5 is a flowchart depicting a method 1000 for grouping preprocessedimages 202. At 1002, the product record 12 including product category 16and the preprocessed images 202 can be received. At 1004, parameters 304can be determined based on the product category.

For each pair of images 302 a and 302 b in the set of preprocessedimages 202, each comparison algorithm 306 can be executed with theappropriate parameters 304. At 1008, the results of each comparisonalgorithm 306 can be evaluated. The evaluation can be based on: thenumber of comparison algorithms 306 that report that the images arenearly identical, the sum (or other mathematical aggregation) of valuesreturned from the comparison algorithms, or other methods. Theevaluation can incorporate category-specific weights for each comparisonalgorithms. For example, in one embodiment, perception hash algorithmresults can be discounted or completely ignored for particular productcategories.

If, at 1010, the evaluation establishes that the pair of candidateimages is sufficiently similar, they can be assigned to the same groupat 1012. If one of image 302 a or 302 b is already assigned to a group,the other image can be assigned to the same group. If both of images 302a and 302 b are assigned to groups, two groups can be combined.Otherwise, the pair of candidate images can be assigned to separategroups at 1014.

At 1016, grouping data can be returned. Grouping data can comprise a setof groups 308, each group 308 comprising image data, or a reference tothe storage location of the image data. Grouping data can also comprisean annotation comprising an identifier for a group 308 associated eachimage 202. Other data formats can be used in embodiments.

Image selector 400 can receive groups 308, and return one or moreselected images 402 for each group. Image selector 400 can receive ordetermine one or more selection criteria 404 related to the quality ofeach image in the group. Selection criteria 404 can be global or vary byproduct category 16. Selection criteria 404 can comprise one or more of:image size, image sharpness, image resolution, and a coverage level ofthe product, or other central object in the image. In one embodiment,image selector 400 can also eliminate any images or groups 308 featuringplaceholder images.

Image sorter 500 can receive selected images 402 and produce sortedimages 502. Image sorter 500 can determine a sorting order for selectedimages 402 based on one or more sorting criteria 504. Sorting criteria504 can be global or vary by product category. Sorting criteria can bebased on the content tag 212 of the image, and/or one or moreindications of a relevance level of the image. For example, one sortingcriteria can instruct image sorter 500 to rank images having a “front”content tag higher than images having a “back” content tag. In anotherexample, it may be determined that for a certain product category, suchas “Men's Shirt,” modeled images are less relevant than images without amodel. The opposite might be true for a product category such as“Women's Shirt.”

In embodiments, sorting criteria can also vary based on data received byimage sorter 500 regarding the intended use of the image. For example,the preferred sorting order may change if the images are to be displayedto a user for general advertising purchases, as opposed to imagesdisplayed to a user at a screen having an add-to-cart function.

Sorted images 502 can be stored in association with product record 12.In embodiments, image data for sorted images 502 can be stored withproduct record 12 in product database 10, or in a cache 506 maintainedby system 100. In embodiments, image data, or references to the storagelocation for sorted images 502 can reside in a data repository such thatthey can be retrieved based on a product identifier 14.

The processing performed by the various components of system 100 can beperformed on an as-needed basis, such that the sorted images 502 aredetermined in response to a request for a given product record 12, andnot stored. In one embodiment, system 100 can be configured to executein a batch mode, such that the sorted images 502 for a set of productrecords 12 can be determined and stored before a particular request ismade. A combination of real-time, or near-real-time processing and batchprocessing can also be supported, such that system 100 can providesorted images 502 on request, and save sorted images 502 in order tosave processing time in the future. As another example, preprocessor 200can be executed at any time to produce and store preprocessed images202, which can be used to respond to individual requests when needed.

API 600 can enable a user (human or programmatic) to access the sortedimages 502 for a product record 12. In one embodiment, API 600 canreceive a product record 12 and return an ordered list of product imagesto a product sales application for display to a user on a productinformation screen. API 600 can determine if sorted images 502 exist inproduct database 10 or cache 506 for product record 12. If no sortedimages 502 exist, API 600 can return an error or other informationalmessage.

API 600 can enable integration of system 100 with existing productinformation applications. In one embodiment, a product sales application30 can be configured to generate a product information screen 32 fordisplay to a user. Product information screen 32 comprises a web page,graphical user interface (GUI) screen, or other display interfaceviewable by a user. Product information screen 32 can include data fromproduct record 12, and one or more images selected from a variety ofimage sources 34. Image sources 34 can each provide a sorted list 36 ofproduct images associated with product record 12. Product salesapplication 30 can maintain a rating value 38 for each image source 34.For example, each image source 34 can be associated with a known thirdparty vendor, and rating values 38 can be assigned based on variousmeasures of vendor trustworthiness, including quality of previouslyprovided images, number of products provided, and the like. API 600 canprovide an interface emulating that of image sources 34, such that anexisting product sales application 30 can receive the sorted images 502product by system 100. Product sales application 30 can be configured toassign API 600 a high rating value 38, such that where sorted images 502are available, sorted images 502 will be selected before those providedby other vendors or image sources 34. API 600 can therefore enableselective implementation of system 100 for product categories orindividual products for which system 100 is most valuable.

Those of ordinary skill in the art will recognize that product salesapplication 30 is just one example of an application or user of system100. System 100 can be configured to interact with other applications orworkflows to provided sorted images.

It should be understood that the individual steps used in the methods ofthe present teachings may be performed in any order and/orsimultaneously, as long as the teaching remains operable. Furthermore,it should be understood that the apparatus and methods of the presentteachings can include any number, or all, of the described embodiments,as long as the teaching remains operable.

In one embodiment, the system 100 and/or its components or subsystemscan include computing devices, microprocessors, modules and othercomputer or computing devices, which can be any programmable device thataccepts digital data as input, is configured to process the inputaccording to instructions or algorithms, and provides results asoutputs. In one embodiment, computing and other such devices discussedherein can be, comprise, contain or be coupled to a central processingunit (CPU) configured to carry out the instructions of a computerprogram. Computing and other such devices discussed herein are thereforeconfigured to perform basic arithmetical, logical, and input/outputoperations.

Computing and other devices discussed herein can include memory. Memorycan comprise volatile or non-volatile memory as required by the coupledcomputing device or processor to not only provide space to execute theinstructions or algorithms, but to provide the space to store theinstructions themselves. In one embodiment, volatile memory can includerandom access memory (RAM), dynamic random access memory (DRAM), orstatic random access memory (SRAM), for example. In one embodiment,non-volatile memory can include read-only memory, flash memory,ferroelectric RAM, hard disk, floppy disk, magnetic tape, or opticaldisc storage, for example. The foregoing lists in no way limit the typeof memory that can be used, as these embodiments are given only by wayof example and are not intended to limit the scope of the disclosure.

In one embodiment, the system or components thereof can comprise orinclude various modules or engines, each of which is constructed,programmed, configured, or otherwise adapted to autonomously carry out afunction or set of functions. The term “engine” as used herein isdefined as a real-world device, component, or arrangement of componentsimplemented using hardware, such as by an application specificintegrated circuit (ASIC) or field-10 programmable gate array (FPGA),for example, or as a combination of hardware and software, such as by amicroprocessor system and a set of program instructions that adapt theengine to implement the particular functionality, which (while beingexecuted) transform the microprocessor system into a special-purposedevice. An engine can also be implemented as a combination of the two,with certain functions facilitated by hardware alone, and otherfunctions facilitated by a combination of hardware and software. Incertain implementations, at least a portion, and in some cases, all, ofan engine can be executed on the processor(s) of one or more computingplatforms that are made up of hardware (e.g., one or more processors,data storage devices such as memory or drive storage, input/outputfacilities such as network interface devices, video devices, keyboard,mouse or touchscreen devices, etc.) that execute an operating system,system programs, and application programs, while also implementing theengine using multitasking, multithreading, distributed (e.g., cluster,peer-peer, cloud, etc.) processing where appropriate, or other suchtechniques. Accordingly, each engine can be realized in a variety ofphysically realizable configurations, and should generally not belimited to any particular implementation exemplified herein, unless suchlimitations are expressly called out. In addition, an engine can itselfbe composed of more than one sub-engines, each of which can be regardedas an engine in its own right. Moreover, in the embodiments describedherein, each of the various engines corresponds to a defined autonomousfunctionality; however, it should be understood that in othercontemplated embodiments, each functionality can be distributed to morethan one engine. Likewise, in other contemplated embodiments, multipledefined functionalities may be implemented by a single engine thatperforms those multiple functions, possibly alongside other functions,or distributed differently among a set of engines than specificallyillustrated in the examples herein.

Various embodiments of systems, devices, and methods have been describedherein. These embodiments are given only by way of example and are notintended to limit the scope of the claimed inventions. It should beappreciated, moreover, that the various features of the embodiments thathave been described may be combined in various ways to produce numerousadditional embodiments. Moreover, while various materials, dimensions,shapes, configurations and locations, etc. have been described for usewith disclosed embodiments, others besides those disclosed may beutilized without exceeding the scope of the claimed inventions.

Persons of ordinary skill in the relevant arts will recognize thatembodiments may comprise fewer features than illustrated in anyindividual embodiment described above. The embodiments described hereinare not meant to be an exhaustive presentation of the ways in which thevarious features may be combined. Accordingly, the embodiments are notmutually exclusive combinations of features; rather, embodiments cancomprise a combination of different individual features selected fromdifferent individual embodiments, as understood by persons of ordinaryskill in the art. Moreover, elements described with respect to oneembodiment can be implemented in other embodiments even when notdescribed in such embodiments unless otherwise noted. Although adependent claim may refer in the claims to a specific combination withone or more other claims, other embodiments can also include acombination of the dependent claim with the subject matter of each otherdependent claim or a combination of one or more features with otherdependent or independent claims. Such combinations are proposed hereinunless it is stated that a specific combination is not intended.Furthermore, it is intended also to include features of a claim in anyother independent claim even if this claim is not directly madedependent to the independent claim.

Moreover, reference in the specification to “one embodiment,” “anembodiment,” or “some embodiments” means that a particular feature,structure, or characteristic, described in connection with theembodiment, is included in at least one embodiment of the teaching. Theappearances of the phrase “in one embodiment” in various places in thespecification are not necessarily all referring to the same embodiment.

Any incorporation by reference of documents above is limited such thatno subject matter is incorporated that is contrary to the explicitdisclosure herein. Any incorporation by reference of documents above isfurther limited such that no claims included in the documents areincorporated by reference herein. Any incorporation by reference ofdocuments above is yet further limited such that any definitionsprovided in the documents are not incorporated by reference hereinunless expressly included herein.

For purposes of interpreting the claims, it is expressly intended thatthe provisions of Section 112, sixth paragraph of 35 U.S.C. are not tobe invoked unless the specific terms “means for” or “step for” arerecited in a claim.

What is claimed is:
 1. A product image evaluation system comprising: aproduct database comprising a product information record that comprisesa product identifier and a product category for a product; an imagedatabase comprising a plurality of candidate images for the product; aparameterized grouping engine configured to produce one or more groupsof similar images by performing a pairwise comparison between each pairof candidate images of the plurality of candidate images using at leastone algorithm configured based on a parameter associated with theproduct category of the product; an image selector configured to producea set of selected images by choosing a best image in each group ofsimilar images based on one or more selection criteria related to thequality of the each similar image in group of similar images; and animage sorter configured to produce an ordered list of product images forthe product by ordering the set of selected images based on one or moresorting criteria related to the content of each selected image in theset of selected images.
 2. The system of claim 1, further comprising anapplication interface configured to provide the ordered list of productimages to a product sales application for display to a user on a productinformation screen.
 3. The system of claim 1, wherein the at least onealgorithm is selected from the group consisting of: a perception hashalgorithm, a difference hash algorithm, a cosine similarity algorithm,and a chi-square distance algorithm.
 4. The system of claim 1, whereinat least one of the one or more selection criteria is based on theproduct category.
 5. The system of claim 1, wherein at least one of theone or more sorting criteria is based on the product category.
 6. Thesystem of claim 1, wherein at least one of the one or more selectioncriteria is selected from the group consisting of: a resolution of theselected image, a sharpness of the selected image, and a coverage of acentral object in the selected image.
 7. The system of claim 1, whereinat least one of the one or more sorting criteria is selected from thegroup consisting of: a content tag of the selected image, and arelevance of the selected image.
 8. The system of claim 1, furthercomprising an image preprocessor configured to produce a preprocessedoutput for each candidate image of the plurality of candidate imagesselected from the group consisting of: a trimmed image, a grayscaleimage, an edge enhanced image, and a red-green-blue (RGB) histogram. 9.The system of claim 1, wherein the parameter associated with the productcategory can be modified based on an input from a user.
 10. The systemof claim 1, wherein the image database comprises images received from aplurality of sources.
 11. A method for evaluating and selecting imagesfor a product comprising: receiving a plurality of candidate images forthe product; producing one or more groups of similar images byperforming a pairwise comparison between each pair of candidate imagesof the plurality of candidate images using at least one algorithmconfigured based on a parameter associated with a category of theproduct; producing a set of selected images by choosing a best image ineach group based on one or more selection criteria related to thequality of the each similar image in group of similar images; andproducing an ordered list of product images by ordering the set ofselected images based on one or more sorting criteria related to thecontent of each selected image in the set of selected images.
 12. Themethod of claim 11, further comprising providing the ordered list ofproduct images to a product sales application for display to a user on aproduct information screen.
 13. The method of claim 11, wherein the atleast one algorithm is selected from the group consisting of: aperception hash algorithm, a difference hash algorithm, a cosinesimilarity algorithm, and a chi-square distance algorithm.
 14. Themethod of claim 11, wherein at least one of the one or more selectioncriteria is based on the product category.
 15. The method of claim 11,wherein at least one of the one or more sorting criteria is based on theproduct category.
 16. The method of claim 11, wherein at least one ofthe one or more selection criteria is selected from the group consistingof: a resolution of the selected image, a sharpness of the selectedimage, and a coverage of a central object in the selected image.
 17. Themethod of claim 11, wherein at least one of the one or more sortingcriteria is selected from the group consisting of: a viewpoint of theselected image, and a relevance of the selected image.
 18. The method ofclaim 11, further comprising producing a preprocessed output for eachcandidate image of the plurality of candidate images selected from thegroup consisting of: a trimmed image, a grayscale image, an edgeenhanced image, and a red-green-blue (RGB) histogram.
 19. The method ofclaim 11, wherein the parameter associated with the product category canbe modified based on an input from a user.
 20. The method of claim 11,wherein the candidate images are received from a plurality of sources.